분산 저장 시스템
1. 개요
1. 개요
분산 저장 시스템은 데이터를 여러 물리적 또는 논리적 위치에 분산하여 저장하는 소프트웨어 시스템이다. 이는 단일 저장 장치나 서버에 의존하지 않고, 네트워크로 연결된 여러 컴퓨터의 저장 공간을 하나의 통합된 저장 공간처럼 활용하는 방식이다. 이러한 접근 방식은 클라우드 컴퓨팅과 빅데이터 처리와 같은 현대 컴퓨팅 환경의 핵심 인프라를 구성한다.
주요 목적은 대규모 데이터를 효율적으로 저장하고 관리하는 것이다. 시스템은 수평적 확장성을 제공하여, 저장 공간이 부족할 경우 새로운 서버나 스토리지 장치를 추가함으로써 쉽게 용량을 늘릴 수 있다. 또한, 데이터를 여러 노드에 복제하여 저장함으로써 고가용성과 내결함성을 확보한다. 하나의 노드에 장애가 발생하더라도 다른 노드에 저장된 복사본을 통해 데이터 접근이 가능하며 서비스 중단을 최소화한다.
이러한 시스템의 핵심 작동 개념에는 데이터 복제, 데이터 샤딩, 그리고 일관성 모델이 있다. 데이터 복제는 동일한 데이터의 사본을 여러 노드에 생성하여 안정성을 높이고, 데이터 샤딩은 대용량 데이터를 작은 단위로 분할하여 여러 노드에 나누어 저장함으로써 처리 성능을 향상시킨다. 일관성 모델은 분산된 복사본들 간의 데이터 일관성을 유지하는 규칙을 정의한다.
대표적인 분산 저장 시스템으로는 Hadoop Distributed File System(HDFS), Google File System(GFS), 그리고 Amazon S3가 있다. 이러한 시스템들은 데이터베이스 관리 시스템의 백엔드 저장소로, 또는 대용량 파일 저장 및 분석을 위한 플랫폼으로 널리 사용된다.
2. 구성 요소
2. 구성 요소
2.1. 데이터 노드
2.1. 데이터 노드
데이터 노드는 분산 저장 시스템에서 실제 데이터 블록을 물리적으로 저장하고 관리하는 기본 단위이다. 이 노드는 시스템의 저장 용량과 처리 성능을 직접 제공하는 구성 요소로, 일반적으로 서버나 컴퓨터 클러스터의 개별 머신에 해당한다. 데이터 노드는 메타데이터 서버의 지시를 받아 데이터의 읽기 및 쓰기 작업을 수행하며, 다른 데이터 노드들과 네트워크를 통해 연결되어 데이터 복제와 장애 복구를 협력한다.
데이터 노드의 주요 역할은 데이터의 안전한 보관과 효율적인 접근이다. 클라이언트로부터 전달받은 데이터 블록을 로컬 디스크에 저장하고, 시스템 정책에 따라 설정된 복제본 수만큼 다른 데이터 노드들에 동일한 데이터를 복제한다. 또한, 주기적으로 메타데이터 서버 또는 마스터 노드에게 자신의 상태와 저장 중인 데이터 블록 목록을 보고하여 시스템의 전체적인 데이터 맵을 유지하도록 돕는다.
이 노드들은 내결함성을 위해 설계된다. 하나의 데이터 노드에 장애가 발생하더라도, 다른 노드에 저장된 복제본을 통해 데이터의 가용성과 무결성이 보장된다. 시스템은 장애 감지 메커니즘을 통해 문제가 생긴 노드를 식별하고, 자동으로 복제본을 새로운 정상 노드에 생성하는 장애 복구 과정을 수행한다. 이러한 방식으로 고가용성이 실현된다.
데이터 노드의 성능과 용량은 전체 시스템의 확장성을 결정한다. 저장 공간이 부족해지거나 처리 부하가 증가할 경우, 새로운 데이터 노드를 클러스터에 추가하기만 하면 시스템의 총 용량과 성능을 선형적으로 증가시킬 수 있다. 이는 Hadoop Distributed File System (HDFS)이나 Ceph와 같은 대표적인 분산 파일 시스템의 근간이 되는 핵심 원리이다.
2.2. 메타데이터 서버
2.2. 메타데이터 서버
메타데이터 서버는 분산 저장 시스템에서 파일 시스템의 네임스페이스를 관리하고, 파일과 디렉터리의 위치 정보를 저장하는 핵심 구성 요소이다. 이 서버는 클라이언트가 실제 데이터에 접근하기 전에, 데이터가 저장된 물리적 위치를 알려주는 역할을 한다. 즉, 파일의 경로, 소유권, 접근 권한, 그리고 각 파일의 데이터 블록이 어떤 데이터 노드에 분산 저장되어 있는지에 대한 맵을 관리한다.
메타데이터 서버의 주요 기능은 파일 시스템 계층 구조를 유지하고, 파일 생성, 삭제, 이름 변경, 디렉터리 조작과 같은 메타데이터 연산을 처리하는 것이다. 클라이언트가 파일을 읽거나 쓸 때, 먼저 메타데이터 서버에 해당 파일의 데이터 블록 위치 정보를 요청한다. 메타데이터 서버는 이 정보를 응답하면, 클라이언트는 해당 데이터 노드들과 직접 통신하여 실제 데이터 입출력 작업을 수행한다. 이 방식은 데이터 트래픽과 메타데이터 트래픽을 분리하여 시스템의 효율성을 높인다.
메타데이터 서버의 설계는 시스템의 성능과 확장성에 직접적인 영향을 미친다. 단일 메타데이터 서버를 사용하는 중앙 집중식 아키텍처는 구현이 간단하고 일관성을 유지하기 쉽지만, 단일 장애점이 될 수 있고 처리 용량에 제한이 있다. 이를 해결하기 위해 메타데이터 서버 자체를 클러스터로 구성하여 분산하거나, 해시 함수를 이용해 메타데이터를 여러 서버에 균등하게 분배하는 방식이 사용된다. Ceph 파일 시스템은 CRUSH 알고리즘을 통해 메타데이터 서버의 부하를 동적으로 분산시키는 대표적인 예이다.
메타데이터 서버의 가용성과 내구성을 보장하기 위해, 메타데이터 자체도 복제되어 다수의 서버에 저장된다. 이를 통해 메타데이터 서버에 장애가 발생하더라도 다른 서버가 작업을 인계받아 서비스 중단을 방지한다. 또한, 메타데이터의 변경 이력을 기록하는 저널링 기법을 사용하여 시스템 장애 시에도 메타데이터의 일관성을 빠르게 복구할 수 있다.
2.3. 클라이언트
2.3. 클라이언트
클라이언트는 분산 저장 시스템에 데이터를 저장하거나 저장된 데이터를 읽어오기 위해 접근하는 최종 사용자 애플리케이션 또는 서비스를 의미한다. 클라이언트는 일반적으로 시스템이 제공하는 특정 API나 라이브러리를 통해 시스템과 상호작용한다. 이는 파일 시스템의 마운트 지점을 통해 접근하는 방식일 수도 있고, RESTful API와 같은 웹 서비스 프로토콜을 사용하는 방식일 수도 있다. 클라이언트의 주요 역할은 사용자나 애플리케이션의 데이터 입출력 요청을 시스템이 이해할 수 있는 형태로 변환하고 전달하는 것이다.
클라이언트는 메타데이터 서버와 통신하여 데이터의 실제 물리적 위치 정보를 먼저 획득한 후, 해당 데이터 노드들과 직접 연결하여 데이터를 읽거나 쓴다. 이 과정에서 클라이언트는 데이터의 일관성 수준을 보장하거나, 캐싱을 통해 성능을 최적화하는 등의 기능을 수행할 수 있다. 예를 들어, Hadoop Distributed File System에서는 HDFS 클라이언트 라이브러리가 네임노드에 파일의 블록 위치를 문의한 후, 직접 데이터노드에서 데이터를 읽어온다.
클라이언트 구현 방식은 시스템의 아키텍처와 제공 인터페이스에 따라 크게 달라진다. 일부 시스템은 표준 POSIX 파일 시스템 인터페이스를 완전히 또는 부분적으로 지원하는 FUSE 기반의 클라이언트를 제공하기도 한다. 반면, 객체 저장소 형태의 Amazon S3나 Google Cloud Storage는 주로 HTTP 기반의 API를 통해 접근한다. 따라서 클라이언트의 형태와 복잡도는 최종 사용자가 시스템을 어떻게 활용하느냐에 직접적인 영향을 미친다.
3. 아키텍처 모델
3. 아키텍처 모델
3.1. 중앙 집중식 메타데이터 아키텍처
3.1. 중앙 집중식 메타데이터 아키텍처
중앙 집중식 메타데이터 아키텍처는 분산 저장 시스템에서 가장 전통적이고 널리 사용되는 설계 방식이다. 이 모델에서는 시스템의 모든 메타데이터(파일 이름, 디렉토리 구조, 접근 권한, 각 파일 블록의 물리적 위치 정보 등)를 관리하는 전용 메타데이터 서버가 단일 또는 소수로 구성된다. 반면, 실제 파일 데이터는 다수의 데이터 노드에 분산되어 저장된다. 클라이언트가 파일에 접근할 때는 먼저 이 중앙 메타데이터 서버에 문의하여 데이터의 정확한 위치 정보를 얻은 후, 해당 데이터 노드들과 직접 통신하여 데이터 입출력을 수행한다.
이 아키텍처의 대표적인 예로는 초기 구글의 Google File System과 이를 오픈 소스로 구현한 Hadoop Distributed File System이 있다. 이러한 시스템들은 빅데이터 분석과 같은 대용량 순차 읽기/쓰기 작업에 최적화되어 설계되었으며, 메타데이터의 규모가 실제 데이터에 비해 상대적으로 작고, 메타데이터 서버의 성능이 충분히 강력할 때 매우 효율적으로 동작한다. 중앙 집중식 관리는 메타데이터의 일관성을 유지하고 캐시 효율을 높이는 데 유리하다.
그러나 이 방식은 단일 장애점 문제를 내포한다. 메타데이터 서버에 장애가 발생하면, 클라이언트는 파일 시스템의 전체 네임스페이스를 잃어버리게 되어 저장된 데이터에 접근할 수 없게 된다. 이를 완화하기 위해 일반적으로 메타데이터 서버를 이중화하거나 액티브-스탠바이 클러스터로 구성하여 고가용성을 확보한다. 또한, 시스템 규모가 매우 커지고 메타데이터 요청이 폭증할 경우, 단일 메타데이터 서버가 병목 현상이 되어 전체 시스템 성능을 제한할 수 있는 확장성의 한계를 가진다.
3.2. 분산 메타데이터 아키텍처
3.2. 분산 메타데이터 아키텍처
분산 메타데이터 아키텍처는 메타데이터 서버의 역할을 여러 노드에 분산시켜 단일 장애점을 제거하고 시스템의 확장성을 높이는 설계 방식이다. 중앙 집중식 메타데이터 아키텍처에서 메타데이터 서버가 병목 현상이나 단일 장애점이 될 수 있는 문제를 해결하기 위해 등장했다. 이 모델에서는 파일의 위치, 권한, 속성과 같은 메타데이터 정보가 하나의 중앙 서버가 아닌 클러스터를 구성하는 여러 노드들에 걸쳐 분산되어 저장되고 관리된다.
이 아키텍처의 구현 방식은 다양하다. 일부 시스템은 메타데이터를 해시 기반으로 여러 노드에 분산 저장하는 방식을 채택하며, 다른 시스템은 동적 해싱이나 일관성 해싱과 같은 알고리즘을 사용하여 노드의 추가나 제거 시 데이터 재배치를 최소화한다. 또한, 분산 해시 테이블을 기반으로 한 P2P 방식으로 메타데이터를 관리하는 접근법도 존재한다. 이러한 분산 관리는 클라이언트가 메타데이터에 접근할 때 더 많은 노드와 통신해야 할 수 있지만, 시스템 전체의 처리량과 내결함성을 크게 향상시킨다.
분산 메타데이터 아키텍처의 주요 장점은 뛰어난 확장성과 가용성이다. 메타데이터 부하가 여러 노드에 분산되므로 대규모 클러스터에서도 성능 저하 없이 확장이 가능하다. 또한, 일부 메타데이터 노드에 장애가 발생하더라도 시스템 전체의 운영에는 영향을 미치지 않으며, 데이터 접근이 가능한 고가용성을 제공한다. 그러나 모든 노드 간의 메타데이터 상태를 일관되게 유지하는 것은 기술적 도전 과제이며, 이를 위해 분산 합의 알고리즘이나 분산 트랜잭션 메커니즘이 필요할 수 있다. 대표적인 분산 파일 시스템인 Ceph는 이 아키텍처를 채택한 시스템의 한 예이다.
3.3. P2P 아키텍처
3.3. P2P 아키텍처
P2P 아키텍처는 분산 저장 시스템에서 메타데이터 서버와 같은 중앙 집중화된 관리 요소를 완전히 배제한 구조이다. 이 모델에서는 시스템을 구성하는 모든 노드가 동등한 지위를 가지며, 각 노드는 클라이언트 요청을 처리하는 동시에 데이터 저장 및 관리를 위한 서버 역할도 함께 수행한다. 데이터의 위치 정보나 시스템 상태 같은 메타데이터는 각 노드에 분산되어 관리되거나, 분산 해시 테이블 같은 알고리즘을 통해 전체 네트워크에 걸쳐 동적으로 유지된다.
이러한 구조는 시스템의 확장성과 내결함성을 극대화하는 데 강점을 보인다. 새로운 노드가 추가되면 기존 시스템의 재구성 없이 자연스럽게 네트워크에 참여할 수 있으며, 특정 노드에 장애가 발생하더라도 시스템 전체의 기능은 다른 노드들이 이를 대체함으로써 유지된다. 또한 중앙 관리 요소가 없기 때문에 단일 장애점이 존재하지 않아 시스템의 가용성이 높아진다.
그러나 P2P 아키텍처는 복잡한 일관성 모델을 유지하기 어렵고, 데이터의 정합성을 보장하는 데 한계가 있을 수 있다. 모든 노드가 동등한 책임을 지기 때문에 부하 분산과 장애 감지를 효율적으로 관리하는 것이 기술적으로 복잡하며, 네트워크 검색 성능이 중앙 집중식 모델에 비해 떨어질 수 있다는 단점도 있다. 이러한 특성으로 인해 빅데이터 분석보다는 파일 공유나 콘텐츠 전송 네트워크와 같은 응용 분야에서 더 널리 활용되는 경향이 있다.
4. 핵심 기술
4. 핵심 기술
4.1. 데이터 분할
4.1. 데이터 분할
데이터 분할은 분산 저장 시스템에서 단일 데이터셋을 여러 조각으로 나누어 서로 다른 저장 노드에 분산시키는 핵심 기술이다. 이 과정은 샤딩이라고도 불리며, 시스템의 전체 저장 용량과 처리 성능을 확장하는 데 필수적이다. 대규모 데이터를 하나의 서버에 저장하는 것은 물리적 한계와 성능 병목 현상을 초래할 수 있기 때문에, 데이터를 분할하여 여러 노드에 걸쳐 병렬로 읽고 쓸 수 있도록 한다.
주요 분할 방식으로는 범위 기반 분할과 해시 기반 분할이 널리 사용된다. 범위 기반 분할은 데이터의 키 값(예: 알파벳 순서나 시간대)을 기준으로 특정 범위를 각 샤드에 할당하는 방식이다. 반면, 해시 기반 분할은 데이터 키에 해시 함수를 적용하여 균일하게 분배하는 방식으로, 부하 분산에 효과적이다. 이러한 분할 전략은 데이터베이스 관리 시스템과 빅데이터 처리 프레임워크에서 핵심적으로 활용된다.
데이터 분할을 효과적으로 관리하기 위해서는 메타데이터 서버 또는 분산된 조정 서비스가 어떤 데이터 조각이 어느 데이터 노드에 위치하는지에 대한 정보를 추적하고 관리한다. 이 매핑 정보는 클라이언트가 데이터에 접근할 때 정확한 노드를 찾는 데 사용된다. 분할은 시스템의 확장성을 높여주지만, 동시에 데이터가 분산됨에 따라 일관성 모델을 유지하고, 노드 장애 시 가용성을 보장하는 복제 기술과 결합되어 설계되어야 한다.
분산 저장 시스템의 대표적인 예인 Hadoop Distributed File System (HDFS)는 큰 파일을 고정된 크기의 블록으로 분할하여 클러스터 내 여러 노드에 저장한다. 이와 유사하게 Google File System (GFS)이나 Amazon S3와 같은 객체 저장소도 데이터를 여러 파티션에 걸쳐 분산 저장하는 방식을 사용하여 페타바이트 규모의 데이터를 안정적으로 처리할 수 있는 기반을 제공한다.
4.2. 복제 및 일관성
4.2. 복제 및 일관성
분산 저장 시스템의 핵심 목표인 고가용성과 내결함성을 달성하기 위해 데이터 복제는 필수적인 기법이다. 이는 동일한 데이터 블록을 시스템 내 여러 데이터 노드에 중복 저장하는 것을 의미한다. 일반적으로 HDFS나 GFS와 같은 시스템은 기본적으로 3개의 복제본을 생성하는 전략을 사용한다. 데이터 복제를 통해 하나 또는 그 이상의 노드에 장애가 발생하더라도 다른 복제본을 통해 데이터 접근이 가능해지며, 읽기 성능 향상에도 기여한다.
그러나 데이터가 여러 위치에 복제되면, 모든 복제본이 항상 동일한 상태를 유지하도록 보장하는 일관성 문제가 발생한다. 이는 일관성 모델이라는 개념으로 체계화된다. 가장 강력한 모델은 강한 일관성으로, 모든 읽기 작업이 가장 최근에 완료된 쓰기 작업의 결과를 반환하도록 보장한다. 반면, 최종 일관성 모델은 쓰기 후 일정 시간이 지나면 모든 복제본이 동일한 값으로 수렴되도록 허용함으로써 가용성과 성능을 우선시한다.
분산 환경에서 복제본 간 일관성을 유지하기 위해 다양한 합의 알고리즘이 사용된다. Paxos나 Raft와 같은 알고리즘은 복제본 그룹 내에서 쓰기 작업의 순서와 적용을 조정하여 데이터의 일관된 상태를 유지한다. 또한, 벡터 시계나 버전 벡터는 이벤트의 부분적 순서를 추적하여 버전 충돌을 탐지하고 해결하는 데 활용된다.
복제와 일관성은 서로 트레이드오프 관계에 있다. 높은 일관성 수준을 요구하면 쓰기 지연 시간이 증가하고 가용성이 저하될 수 있으며, 반대로 일관성 요구를 완화하면 시스템의 응답성과 내결함성은 높아질 수 있다. 따라서 분산 데이터베이스나 클라우드 저장소 서비스는 애플리케이션의 요구사항에 따라 적절한 일관성 모델을 선택하고, 복제 전략을 설계한다.
4.3. 장애 감지 및 복구
4.3. 장애 감지 및 복구
장애 감지 및 복구는 분산 저장 시스템이 고가용성과 내결함성을 유지하는 핵심 메커니즘이다. 시스템은 정기적인 하트비트 메시지 교환 또는 리스 기반 모니터링을 통해 각 데이터 노드의 상태를 지속적으로 확인한다. 특정 노드로부터 응답이 없거나 지연이 발생하면 해당 노드는 장애 상태로 판단하여 시스템의 가용 노드 목록에서 제외된다. 이러한 장애 감지는 주로 마스터 노드 또는 메타데이터 서버가 담당하며, 감지 결과는 시스템의 메타데이터에 반영되어 이후의 모든 읽기 및 쓰기 작업이 정상 노드로만 라우팅되도록 한다.
장애가 감지되면 시스템은 즉시 복구 절차를 시작한다. 가장 일반적인 복구 방법은 데이터 복제를 활용하는 것이다. 시스템은 장애 노드에 저장된 데이터의 복제본이 다른 정상 노드에 존재한다는 것을 메타데이터를 통해 확인하고, 해당 복제본을 새로운 정상 노드에 추가로 복제하여 사전에 정의된 복제 계수를 다시 만족시킨다. 이 과정에서 데이터의 일관성을 유지하기 위해 쿼럼 기반의 합의 프로토콜이 사용되거나, 최신의 데이터 복제본을 선정하는 메커니즘이 동작한다.
복구 작업은 자동으로 수행되어 시스템 관리자의 개입 없이도 서비스 중단을 최소화한다. 장애 노드가 복구되어 다시 클러스터에 합류하면, 시스템은 해당 노드의 데이터를 동기화하거나, 노드를 새로운 데이터 저장 용도로 점진적으로 재활용한다. 이러한 지속적인 모니터링과 자동화된 복구 체계는 HDFS나 Ceph와 같은 대규모 분산 저장 시스템이 수천 대의 서버로 구성된 환경에서도 안정적으로 운영될 수 있는 기반을 제공한다.
4.4. 부하 분산
4.4. 부하 분산
분산 저장 시스템에서 부하 분산은 시스템의 전체적인 성능, 확장성 및 자원 활용 효율성을 보장하는 핵심 메커니즘이다. 이는 데이터 입출력 요청과 저장 작업을 시스템 내 여러 데이터 노드에 고르게 분배하여 단일 지점에 과부하가 집중되는 것을 방지한다. 효과적인 부하 분산은 처리량을 최대화하고 응답 시간을 단축시키며, 시스템의 안정성을 높인다.
부하 분산을 구현하는 주요 전략으로는 동적 부하 분산이 널리 사용된다. 이 방식은 메타데이터 서버 또는 모니터링 에이전트가 각 데이터 노드의 실시간 부하 상태(예: CPU 사용률, 메모리 사용량, 디스크 I/O, 네트워크 트래픽)를 지속적으로 모니터링한다. 새 데이터가 저장되거나 클라이언트 요청이 들어올 때, 시스템은 현재 가장 여유 있는 자원을 가진 노드를 선택하여 작업을 할당한다. 이는 특정 노드가 핫스팟이 되는 현상을 사전에 방지한다.
데이터의 초기 배치 단계에서도 부하 분산을 고려할 수 있다. 데이터 분할 기법을 적용할 때, 단순히 데이터를 순차적으로 나누는 대신, 각 파티션의 예상 접근 빈도나 데이터 크기를 고려하여 여러 노드에 균형 있게 분산시킬 수 있다. 또한, 인기 있는 데이터에 대한 접근 부하를 분산시키기 위해 데이터 복제본을 여러 노드에 생성하는 것도 일반적인 방법이다. 클라이언트는 여러 복제본 중 하나에서 데이터를 읽음으로써 읽기 부하를 분산시킬 수 있다.
부하 분산 정책은 시스템의 일관성 모델 및 데이터 지역성 요구사항과 조화를 이루어야 한다. 강한 일관성을 유지해야 하는 시스템에서는 부하 분산을 위해 데이터를 이동할 때 관련된 모든 복제본의 동기화 오버헤드를 고려해야 한다. 많은 현대 분산 저장 시스템은 자동화된 리밸런싱 기능을 내장하여 노드 추가/제거 시 또는 부하 불균형이 감지되면 데이터를 백그라운드에서 재분배하여 지속적인 성능 최적화를 달성한다.
5. 장단점
5. 장단점
5.1. 장점
5.1. 장점
분산 저장 시스템의 가장 큰 장점은 확장성이다. 단일 서버의 저장 용량 한계를 넘어 수평적으로 확장이 가능하다. 새로운 저장 노드를 클러스터에 추가함으로써 시스템 전체의 저장 용량과 처리 성능을 선형적으로 증가시킬 수 있다. 이는 빅데이터 분석이나 클라우드 컴퓨팅 서비스와 같이 데이터 양이 폭발적으로 증가하는 환경에서 필수적인 특성이다.
또한 높은 가용성과 내결함성을 제공한다. 데이터는 여러 데이터 노드에 복제되어 저장되므로, 일부 하드웨어에 장애가 발생하더라도 데이터 유실 없이 서비스를 지속할 수 있다. 시스템은 장애 감지 메커니즘을 통해 문제가 있는 노드를 식별하고, 정상 노드에 저장된 복제본을 통해 데이터 접근성을 보장한다. 이는 고가용성을 요구하는 금융 거래나 핵심 애플리케이션 운영에 매우 중요하다.
성능 측면에서도 이점이 있다. 데이터가 여러 노드에 분산되어 있기 때문에, 클라이언트의 읽기 및 쓰기 요청을 여러 노드에 동시에 분산시켜 처리할 수 있다. 이는 병렬 처리를 통한 전체 처리량 향상으로 이어진다. 특히 데이터 샤딩을 통해 특정 데이터 조각에 대한 접근 부하를 분산시킬 수 있어, 시스템의 전반적인 응답 속도를 개선한다.
마지막으로, 지리적 분산을 통한 데이터 접근성 향상과 재해 복구 능력도 중요한 장점이다. 데이터 복제본을 서로 다른 데이터 센터나 지역에 분산 저장함으로써, 자연 재해나 지역적 네트워크 장애로부터 시스템을 보호할 수 있다. 사용자는 물리적 위치와 관계없이 가장 가까운 노드에서 데이터에 빠르게 접근할 수 있으며, 이는 글로벌 서비스의 성능과 안정성을 높인다.
5.2. 단점
5.2. 단점
분산 저장 시스템은 여러 장점을 제공하지만, 본질적으로 분산 환경에서 운영된다는 점에서 몇 가지 단점을 수반한다. 가장 큰 문제는 시스템의 복잡성 증가이다. 데이터를 여러 노드에 분산시키고 관리하기 위해서는 데이터 복제, 일관성 모델, 장애 감지 및 복구, 부하 분산 등 많은 기술적 요소들이 상호작용해야 한다. 이로 인해 시스템 설계, 구현, 그리고 지속적인 운영 및 유지보수의 난이도가 단일 저장소에 비해 현저히 높아진다.
또한, 데이터의 일관성과 가용성, 네트워크 분할 내성 사이에서 트레이드오프를 관리해야 하는 어려움이 있다. 강한 일관성을 보장하려면 성능이 저하될 수 있고, 가용성을 우선시하면 모든 노드의 데이터가 즉시 동기화되지 않는 결과를 초래할 수 있다. 이는 CAP 정리로 잘 알려진 분산 시스템의 근본적인 제약 사항이다.
네트워크 의존성도 주요 단점 중 하나이다. 모든 노드 간 통신이 네트워크를 통해 이루어지므로, 네트워크 지연이나 대역폭 부족은 전체 시스템 성능의 병목 현상이 될 수 있다. 또한, 네트워크 분할이 발생하면 시스템의 일부가 고립되어 서비스 장애나 데이터 불일치 문제가 발생할 위험이 항상 존재한다.
마지막으로, 단일 시스템에 비해 보안 관리가 더 복잡해질 수 있다. 데이터가 여러 물리적 위치에 분산되어 있기 때문에, 각 노드와 노드 간 통신 채널에 대한 보안을 일관되게 적용하고 모니터링해야 한다. 이는 공격 표면이 넓어짐을 의미하며, 데이터 무결성과 기밀성을 유지하는 데 추가적인 비용과 노력을 요구한다.
6. 대표적인 시스템
6. 대표적인 시스템
6.1. HDFS
6.1. HDFS
HDFS는 아파치 하둡 프로젝트의 핵심 구성 요소로, 범용 하드웨어 상에서 실행되도록 설계된 분산 파일 시스템이다. 주로 빅데이터 분석 작업을 위한 대용량 데이터의 안정적인 저장을 목표로 하며, 높은 처리량에 최적화되어 있다. 이 시스템은 마스터-슬레이브 아키텍처를 채택하고 있으며, 자바 언어로 구현되었다.
HDFS의 아키텍처는 단일 네임노드(마스터)와 다수의 데이터노드(슬레이브)로 구성된다. 네임노드는 파일 시스템의 네임스페이스와 파일에 대한 메타데이터를 관리하는 중앙 서버 역할을 한다. 반면, 데이터노드는 실제 데이터 블록을 저장하고, 클라이언트의 읽기/쓰기 요청을 처리하며, 네임노드에게 정기적으로 상태를 보고한다.
이 시스템의 핵심 설계 원칙은 장애 허용과 데이터 지역성이다. 장애 허용을 위해 기본적으로 데이터 블록을 여러 데이터노드에 복제하여 저장하며, 데이터노드나 디스크 장애가 발생하더라도 다른 복제본을 통해 데이터를 계속 사용할 수 있다. 데이터 지역성 원칙은 계산 작업을 데이터가 저장된 위치에 가깝게 스케줄링하여 네트워크 대역폭 소비를 줄이고 처리 성능을 향상시킨다.
HDFS는 초기 구글 파일 시스템(GFS)의 논문에 큰 영향을 받아 개발되었으며, 이후 하둡 생태계의 기반 저장소로 널리 사용되고 있다. 주로 맵리듀스와 같은 배치 처리 작업에 적합하며, 많은 양의 작은 파일을 저장하거나 낮은 지연 시간의 접근이 필요한 경우에는 비효율적일 수 있다는 특징을 가진다.
6.2. Ceph
6.2. Ceph
Ceph는 오픈 소스 분산 저장 시스템으로, 단일 장애점 없이 대규모 데이터를 저장하고 관리하도록 설계되었다. 클라우드 컴퓨팅 환경을 위해 개발되었으며, 객체 저장, 블록 저장, 파일 시스템 인터페이스를 통합적으로 제공하는 것이 특징이다. 데이터는 자동 복제와 자동 재조정을 통해 고가용성과 내결함성을 확보한다.
Ceph의 핵심은 CRUSH 알고리즘을 기반으로 한 자율적 분산 객체 저장 아키텍처이다. 이는 중앙 메타데이터 서버에 의존하지 않고, 클라이언트가 CRUSH 맵을 직접 계산하여 데이터의 위치를 파악하고 접근할 수 있게 한다. 따라서 시스템의 확장성과 성능이 뛰어나며, 메타데이터 병목 현상을 피할 수 있다.
시스템은 모니터, 메타데이터 서버, 객체 저장 장치 노드로 구성된다. 모니터는 클러스터 상태 맵을 유지 관리하고, 메타데이터 서버는 CephFS 파일 시스템의 네임스페이스를 제공하며, 객체 저장 장치 노드는 실제 데이터를 저장하고 서비스한다. 모든 구성 요소는 분산되어 운영된다.
Ceph는 오픈스택과 같은 클라우드 플랫폼의 표준 저장소 백엔드로 널리 채택되었으며, 빅데이터 분석, 가상 머신 이미지 저장, 백업 및 아카이브 등 다양한 용도로 사용된다. 리던던시 코딩을 지원하여 데이터 복제 대비 저장 공간 효율을 높일 수도 있다.
6.3. GlusterFS
6.3. GlusterFS
GlusterFS는 레드햇이 개발한 오픈 소스 분산 파일 시스템이다. 여러 서버의 로컬 파일 시스템을 하나의 병합된 대용량 저장 공간으로 통합하며, 스케일 아웃 아키텍처를 통해 수십 페타바이트 규모의 저장 공간을 구성할 수 있다. 중앙 집중식 메타데이터 서버가 필요 없는 P2P 아키텍처를 채택하여 단일 장애점을 제거하고 확장성을 극대화하는 것이 특징이다.
GlusterFS는 사용자 요청을 처리하는 클라이언트, 실제 데이터를 저장하는 스토리지 서버, 그리고 이들을 연결하는 네트워크로 구성된다. 데이터는 트랜스레이션이라는 모듈식 스택을 통해 처리되며, DHT와 같은 알고리즘을 사용해 파일 위치를 결정한다. 이 설계는 시스템에 새로운 기능을 추가하거나 성능을 최적화하기 용이하게 만든다.
주요 기술로는 데이터를 여러 브릭에 걸쳐 스트라이핑하는 분산 스트라이프 볼륨, 복사본을 생성하는 분산 복제 볼륨, 그리고 이 둘을 결합한 분산 스트라이프 복제 볼륨 등 다양한 볼륨 타입을 제공한다. 이러한 유연한 볼륨 관리 방식을 통해 성능, 가용성, 데이터 내구성 요구사항에 맞춰 저장 방식을 선택할 수 있다.
GlusterFS는 가상 머신 이미지 저장, 백업 아카이빙, 미디어 스트리밍, Hadoop과 같은 빅데이터 분석 워크로드 등 다양한 분야에서 활용된다. 표준 파일 시스템 프로토콜을 사용하며, 별도의 전용 클라이언트 소프트웨어 없이도 접근이 가능한 점이 장점이다.
